// 引用工具类
import re from "../../utlils/re"

// pages/menus/menus.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    num: 0,
    numPrice:0,
    typeList: [], //菜品分类
    foodList: [], //菜品
    mIndex: 0,//选择下标
    hash: {} //{菜品类别：菜品列表}
  },
  /**
  * 生命周期函数--监听页面加载
  */
  onLoad(options) {
    //将本地hash赋值this.hash
    if(wx.getStorageSync('hash')){
      this.data.hash = wx.getStorageSync('hash')
    }
    // 1、获取菜品分类
    re({
      url: "vv1/serie",
      data: {
        uid: "6274dbd6421606b378aa98b6",
      },
      success: (res) => {
        // 赋值渲染 --双向绑定
        this.setData({
          typeList: res.data.data
        })
        // 1、1判断本地储存下单数据
        if(this.data.hash[this.data.mIndex]){
          // 赋值渲染 --双向绑定 
          this.setData({
            foodList: this.data.hash[this.data.mIndex]
          },function(){
            // 调用更新总价
            this.onNum()
          })
          return;
        }
        // 1、2渲染默认下标分类的菜品
        //获取菜品
        re({
          url: 'vv1/dish',
          data: {
            uid: "6274dbd6421606b378aa98b6",
            serie: this.data.typeList[this.data.mIndex]._id
          },
          success: (res) => {
            // 赋值渲染 --双向绑定 
            this.setData({
              foodList: res.data.data
            }, function () {
              // 将此分类下的菜品储存hash
              this.data.hash[this.data.mIndex] = this.data.foodList
              // 将hash储存本地
              wx.setStorageSync('hash', this.data.hash)
              // 调用更新总价
              this.onNum()
            })
          }
        })
      }
    })
  },
  // 下单数量
  onNum(){
    let nums = 0;
    let priceNum = 0;
    for(let v in this.data.hash){
      for(let i in this.data.hash[v]){
        // 判断num存在
        if(this.data.hash[v][i].num){
          nums +=this.data.hash[v][i].num
          priceNum  += this.data.hash[v][i].num*this.data.hash[v][i].price

        }
      }
    }
    // 更新数据
    this.setData({
      num:nums,
      numPrice:priceNum
    })
  },
  // 下单
  onAccount() {
    // 跳转
    wx.navigateTo({
      url: '/pages/account/account',
    })
  },
  // 点击菜单分类
  onClickMI(e) {
    // 1、获取点击的下标
    let index = e.currentTarget.dataset.index
    this.setData({
      mIndex: index
    })
    // 2、判断是否请求过此类别的菜品
    if (!this.data.hash[index]) {
      //2、1 为空发送获取菜品
      re({
        url: 'vv1/dish',
        data: {
          uid: "6274dbd6421606b378aa98b6",
          serie: this.data.typeList[index]._id
        },
        success: (res) => {
          // 赋值渲染 --双向绑定
          this.setData({
            foodList: res.data.data
          }, function () {
            // 请求完就加入hash
            this.data.hash[this.data.mIndex] = this.data.foodList
          })
        }
      })
    } else {
      //不为空则从hash获取
      this.setData({
        foodList: this.data.hash[this.data.mIndex]
      })
    }

  },
  // 增加
  onAdd(e){
    // 类别下标
    let midex = e.currentTarget.dataset.midex
    // 菜品下标
    let fidex = e.currentTarget.dataset.fidex
    //1、数量增加
    //判断是否有数量
    if(!this.data.foodList[fidex].num){
      //没有就等于1
      this.data.foodList[fidex].num = 1
      // 双向更新
      this.setData({
        foodList:this.data.foodList
      },function(){
        //更新到hash
        this.data.hash[midex] = this.data.foodList
        // 将hash储存本地
        wx.setStorageSync('hash', this.data.hash)
      })
      
    }else{
      // 有就加1
      this.data.foodList[fidex].num++
      // 双向更新
      this.setData({
        foodList:this.data.foodList
      },function(){
        //更新到hash
        this.data.hash[midex] = this.data.foodList
        // 将hash储存本地
        wx.setStorageSync('hash', this.data.hash)
      })
    }
    // 调用更新总价
    this.onNum()
  }
  ,
  // 减少
  onReduce(e){
    // 类别下标
    let midex = e.currentTarget.dataset.midex
    // 菜品下标
    let fidex = e.currentTarget.dataset.fidex
    //1、数量增加
    //判断是否有数量
    if(!this.data.foodList[fidex].num){
      //没有就等于1
      this.data.foodList[fidex].num = 1
      // 双向更新
      this.setData({
        foodList:this.data.foodList
      },function(){
        //更新到hash
        this.data.hash[midex] = this.data.foodList
        // 将hash储存本地
        wx.setStorageSync('hash', this.data.hash)
      })
      
    }else{
      // 判断数量边界
      if(this.data.foodList[fidex].num == 0){
        return;
      }
      this.data.foodList[fidex].num--
      // 双向更新
      this.setData({
        foodList:this.data.foodList
      },function(){
        //更新到hash
        this.data.hash[midex] = this.data.foodList
        // 将hash储存本地
        wx.setStorageSync('hash', this.data.hash)
      })
    }
    // 调用更新总价
    this.onNum()
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})